package viewPackage;

import java.awt.Component;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionListener;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;

import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.event.TableModelListener;
import javax.swing.table.DefaultTableModel;
@SuppressWarnings("serial")
public class FactuurAanmaken extends JPanel {
	private DefaultTableModel model = new DefaultTableModel();
	private JTable table = new JTable();
	private JButton terugButton, voegArtikelToe, verstuurFactuur;
	private JScrollPane listScroller = new JScrollPane();
	private JLabel naam, adres, email, openstaandeFactuur, datum,
			factuurnummer, betalingstermijn, totaalPrijs;
	private Box totaalBox = Box.createVerticalBox();
	private JLabel titelTekst;

	public FactuurAanmaken(String voornaams, String achternaams, String adress,
			String emails, int factuurID) {
		// tabel
		model = new DefaultTableModel();
		model.addColumn("id");
		model.addColumn("Artikel naam");
		model.addColumn("aantal");
		model.addColumn("prijs");
		table = new JTable(model);
		table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		
		Font titelFont = new Font("Dialog", 1, 20);
		titelTekst = new JLabel("Factuur aanmaken");
		titelTekst.setFont(titelFont);

		// Labels
		totaalPrijs = new JLabel("TotaalPrijs : 0.00");
		naam = new JLabel("Naam: " + voornaams + " " + achternaams + " ");
		adres = new JLabel("Adres: " + adress + " ");
		email = new JLabel("Email: " + emails + " ");

		datum = new JLabel("Datum: " + getDatum(0, 0, 0) + " ");
		betalingstermijn = new JLabel("Betalingstermijn: " + getDatum(0, 1, 0)
				+ " ");
		factuurnummer = new JLabel("Factuurnummer: " + factuurID + " ");
		//openstaandeFactuur = new JLabel("Openstaande factuur");
		listScroller = new JScrollPane(table);
		listScroller.setPreferredSize(new Dimension(300, 80));
		terugButton = new JButton("Ga terug");
		voegArtikelToe = new JButton("Selecteer artikel");
		verstuurFactuur = new JButton("Verstuur factuur");

		Box totaalBox = Box.createVerticalBox();
		Box klantGegevens = Box.createVerticalBox();
		Box factuurGegevens = Box.createVerticalBox();
		Box gegevensBox = Box.createHorizontalBox();
		Box buttonBox = Box.createHorizontalBox();
		
		klantGegevens.add(new JLabel("Klantgegevens:"));
		klantGegevens.add(naam);
		klantGegevens.add(adres);
		klantGegevens.add(email);
		
		factuurGegevens.add(new JLabel("Factuurgegevens:"));
		factuurGegevens.add(factuurnummer);
		factuurGegevens.add(betalingstermijn);
		factuurGegevens.add(new JLabel(" "));
		
		gegevensBox.add(klantGegevens);
		gegevensBox.add(Box.createHorizontalStrut(20));
		gegevensBox.add(factuurGegevens);
		
		buttonBox.add(getVoegArtikelToe());
		buttonBox.add(getTerugButton());
		buttonBox.add(getVerstuurFactuur());
		
		titelTekst.setAlignmentX((Component.LEFT_ALIGNMENT));
		gegevensBox.setAlignmentX((Component.LEFT_ALIGNMENT));
		buttonBox.setAlignmentX((Component.LEFT_ALIGNMENT));
		totaalPrijs.setAlignmentX((Component.LEFT_ALIGNMENT));
		
		totaalBox.add(titelTekst);
		totaalBox.add(Box.createVerticalStrut(15));
		totaalBox.add(gegevensBox);
		totaalBox.add(Box.createVerticalStrut(10));
		totaalBox.add(listScroller);
		totaalBox.add(Box.createVerticalStrut(5));
		totaalBox.add(totaalPrijs);
		totaalBox.add(Box.createVerticalStrut(15));
		totaalBox.add(buttonBox);

		add(totaalBox);

	}

	public void setListener(ActionListener listener) {
		getTerugButton().addActionListener(listener);
		getVoegArtikelToe().addActionListener(listener);
		getVerstuurFactuur().addActionListener(listener);
	}

	public void setTableModelListener(TableModelListener l) {
		model.addTableModelListener(l);
	}

	/*
	 * public void voegItemToe(Item i) {
	 * 
	 * boolean bestaat = false; for (int r = 0; r < factuurRegels.size(); r++) {
	 * if (factuurRegels.get(r).getItem().equals(i)) { bestaat = true;
	 * factuurRegels.get(r).setAantal(factuurRegels.get(r).getAantal() + 1);
	 * model.setValueAt(factuurRegels.get(r).getAantal(), r, 2); } }
	 * 
	 * if (!bestaat) { model.addRow(new Object[] { i.getID(),
	 * i.getBeschrijving(), 1, i.getPrijs() }); factuurRegels.add(new
	 * FactuurRegel(1, 19, factuurRegels.size(), i)); } table.validate();
	 * listScroller.validate(); totaalBox.validate(); updateFactuur(); }
	 * 
	 * public Factuur updateFactuur() {
	 * 
	 * //factuur.setKlant(klant); factuur.setFactuurDatum(new Date()); for (int
	 * r = 0; r < factuurRegels.size(); r++) {
	 * factuurRegels.get(r).setAantal(Integer.parseInt(model.getValueAt(r,
	 * 2).toString())); } factuur.setAlleFactuurRegels(factuurRegels);
	 * DecimalFormat df = new DecimalFormat("#.##");
	 * getTotaalPrijs().setText("TotaalPrijs : " +
	 * df.format(factuur.berekenTotaalBedrag())); return factuur; }
	 */
	public String getDatum(int dag, int maand, int jaar) {
		DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
		Calendar c = Calendar.getInstance();
		c.add(Calendar.MONTH, maand);
		c.add(Calendar.YEAR, jaar);
		c.add(Calendar.DAY_OF_MONTH, dag);
		return dateFormat.format(c.getTime());

	}

	public JButton getVoegArtikelToe() {
		return voegArtikelToe;
	}

	public JButton getVerstuurFactuur() {
		return verstuurFactuur;
	}

	public JButton getTerugButton() {
		return terugButton;
	}

	public DefaultTableModel getModel() {
		return model;
	}

	public void setModel(DefaultTableModel model) {
		this.model = model;
		table.validate();
		listScroller.validate();
		totaalBox.validate();
	}

	public JLabel getTotaalPrijs() {
		return totaalPrijs;
	}

	public void setTotaalPrijs(String prijs) {
		totaalPrijs.setText(prijs);
		table.validate();
		listScroller.validate();
		totaalBox.validate();
		this.validate();
	}

}
